package com.fh.modules.ums.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fh.common.exception.Assert;
import com.fh.common.web.impl.AbstractServiceImpl;
import com.fh.modules.shiro.ShiroUtils;
import com.fh.modules.ums.entity.UmsPartnerApply;
import com.fh.modules.ums.mapper.UmsPartnerApplyMapper;
import com.fh.modules.ums.service.IUmsMemberService;
import com.fh.modules.ums.service.IUmsPartnerApplyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;

/**
 * @Description: 合伙人申请
 * @author： code generator
 * @date：   2019-09-25
 * @version： V1.0
 */
@Service
public class UmsPartnerApplyServiceImpl extends AbstractServiceImpl<UmsPartnerApplyMapper, UmsPartnerApply> implements IUmsPartnerApplyService {

    @Autowired
    private IUmsMemberService umsMemberService;

    @Override
    public boolean save(UmsPartnerApply umsPartnerApply) {
        Assert.isFalse(this.validateApplyable(umsPartnerApply.getMemberId()),"请别重复申请");
        umsPartnerApply.setApplyDate(new Date());
        umsPartnerApply.setAuditStatus(0);
        return super.save(umsPartnerApply);
    }

    @Transactional
    public void audit(Integer partnerApplyId,Integer auditResult,String auditMsg){
        UmsPartnerApply umsPartnerApply=this.getById(partnerApplyId);
        Assert.isFalse(umsPartnerApply.getAuditStatus()==0,"不能重复审批哦");
        if(auditResult==1){
            //通过
            umsMemberService.addPartnerInfo(umsPartnerApply);
        }else if(auditResult==2){
            //不通过
        }else{
            Assert.error("审核参数错误");
        }
        umsPartnerApply.setAuditMsg(auditMsg);
        umsPartnerApply.setAuditStatus(auditResult);
        umsPartnerApply.setAuditAccount(ShiroUtils.getUser().getId());
        umsPartnerApply.setApplyDate(new Date());
//        umsPartnerApply.setAuditAccount("");
        this.updateById(umsPartnerApply);
    }



    /**
     * 验证是否可再次申请
     * @return
     */
    private boolean validateApplyable(Integer memberId){
        LambdaQueryWrapper<UmsPartnerApply> query=new LambdaQueryWrapper<UmsPartnerApply>();
        query.eq(UmsPartnerApply::getMemberId,memberId);
        query.lt(UmsPartnerApply::getAuditStatus,2);
        //没有0和1的记录则可以申请
        return this.getOne(query)!=null?false:true;
    }
}
